﻿
//void是空的意思，main函数执行完后，什么都不返回。
//main函数是可以接受参数的，但是这里没有参数，所以是void。
//printf("%c",'q');//''括起来的是一个字符
//printf（"%d",123);//打印数字
//printf("%f",3.5);     而且打印是默认小数点后六位
// d是整型，s是字符串，c是字符型，f是浮点型，注意c对应是单引号，s对应是双引号。

//char arr[2]={'a','b','c'}
//printf的结果是abc烫烫烫烫烫，会生成乱码  因为没有遇到\0


//三字符
//??)->]
//??(->[
//3.28


//   /+"或者'能转义   例"\""能打印出"
//    //+字符能防止转义
//   /t制表符,按照4或8个字符对齐，不足8个字符，补空格，例如a       bc      a加空格刚好为8个字符	      
//    \b退格符，如果\b后面有字符，那么退格符会把\b后面的字符替换掉,例如ab\bcd，输出acd
//   \ddd八进制转义字符，例如\141，输出a   a的ASCII码是141
//   \xdd十六进制转义字符，例如\x61，输出a  printf("%c",'\x61')后面加单引号
//   \n换行符，\r回车符，\a警告符，\v垂直制表符，\f换页符，\0空字符，\?问号，\\反斜杠，\0ddd八进制转义字符，\xdd十六进制转义字符
//   strlen()函数是计算字符串长度的，不包括\0
//   sizeof()函数是计算数组长度的，包括\0
//  "c:\test\198\abc\test.c"有18个字符，\ddd是八进制，但是该字符中出现了9，所以不是八进制转义字符，不是16个，\ddd是一个字符
//   \1是一个字符，是\ddd形式
//  float a=3.5;  可以在后面加f，也可以不加，但是加了f，表示是float类型，不加f，表示是double类型
//  局部变量不初始化，是随机值，全局变量不初始化，是0，而且局部变量优先使用
//  3.30


//int a/b;  a/b是整数，结果是整数，例如5/2=2...1
//double a/b;  a/b是浮点数，结果是浮点数，例如5.0/2=2.500000
//int a%b;  a%b是整数，结果是整数，例如5%2=1  取模必须是整数
//负数取模是依据第一位的符号，例如-5%2=-1  5%-2=1  -5%-2=-1	
// int ch=getchar();//读取一个字符，返回值是int类型
//print("%d",ch);  //打印字符的ASCII码
//putchar(ch);  //打印字符
//getchar()和putchar()是一对，getchar()是读取一个字符，putchar()是打印一个字符
//printf("there are %d apples\n",3);  //打印there are 3 apples   占位符
//"5d\n"  //5个字符宽度，右对齐,不够5个字符，补空格，浮点数默认小数点后6位也占位
//"-5d\n"  //5个字符宽度，左对齐，不够5个字符，补空格
//"%.2f\n"  //保留两位小数,四舍五入
//"%*.*f\n",5,2,3.14159  //5是宽度，2是小数点后位数，3.14159是要打印的数
//"%.2s\n","hello"  //保留两位字符
//scanf如果没有读到正确的数据，返回0，如果一个都没有读到，返回-1
//3.31


//常规情况下，直接写2.0，是double类型，写2.0f，是float类型	，可以避免隐式转换，例如float a=2.0;  //2.0是double类型，隐式转换为float类型

//#include <stdio.h>
//int main()
//{
//	int a, b, c;
//	a = 5;
//	c = ++a;// ++a：加给a+1，结果为6，用加完之后的结果给c赋值，因此：a = 6  c = 6
//	b = ++c, c++, ++a, a++;
//	// 这里先算b=++c, b得到的是++c后的结果，b是7
//	// b=++c 和后边的整体构成逗号表达式，依次从左向右计算的。
//	// 表达式结束时，c++和，++a,a++会给a+2，给c加1，此时c：8，a：8，b:7
//	b += a++ + c; // a先和c加，结果为16，在加上b的值7，比的结果为23，最后给a加1，a的值为9
//	printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
//	return 0;
//}

//printf()允许限定占位符的最小宽度。 % 5d表示这个占位符的宽度至少为5位。如果不满5位，对应的值的前面会添加空格。如果超过5位，正常输出就行，5是最少输出5位。

//666
//666
//666
//66

//66

//666


//#include <stdio.h>
//int runnian(int year)
//{
//	return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
//}
//int zdays(int year, int month, int day)
//{
//	int days = 1;
//	int months[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//	for (int i = 2010; i < year, i++;)
//		days += runnian(i) ? 366:365;
//	for (int i = 1; i < month; i++) {
//		days += months[i-1];
//		if (i == 2 && runnian(year))
//			days += 1;
//	}
//	return days + day;
//}
//int main()
//{
//	int year, month, day;
//	scanf_s("%d %d %d", &year, &month, &day);
//	int total = zdays(year, month, day);
//	int mo = total % 5;
//	mo>=1 && mo<=3 ? printf("Fishing\n") : printf("Drying\n");
//	return 0;
//}


//单引号括起来的⾥⾯只能是⼀个字符
//这个题⽬主要考察的点在于逗号表达式，逗号表达式的意思就是说从左往右依次计算，但是只返回最
//右边的结果，昨天的作业题⽬中也有⼀道选择题涉及到了逗号表达式的问题，所以（a, b), 最终的结果
//其实就是b的值，（b, a)也是⼀样的道理


//默认情况下 if后面只能跟⼀条语句，else后面也只能跟⼀条语句，如果想要跟多条语句，必须加上{}，但是一条语句也可以加上{}，
//嵌套可以用else if 也可以用else{if... else...}，最推荐的还是用else if，

//悬空else问题
//else总是与离它最近的if匹配，没有括号的情况下

//多个关系运算符不宜连用，例如：0<a<5
//&&是与的意思，||是或的意思，而且两者都为真，结果才为真
//if (a && b)  //a和b都为真，结果才为真
//if (a || b)  //a和b有一个为真，结果就为真
//&&如果前面=0，后面不执行，如果前面=1，后面执行
//||如果前面=0，后面执行，如果前面=1，后面不执行



#include <stdio.h>
//int main()
//{
//	int i = 0;
//	for (i = 0; i <= 100; i++)
//	{
//		if (i%3==0)
//		{
//			printf("%d\n", i);
//		}
//
//	}
//	return 0;
//}


int main()
{
	int a = 1;
	int b = 2;
	int c = 3;	
	int d = 0;
	int e = 0;
	int f = 0;
	d = a>c ? a : c;
	e = b>c ? c : b;
	f = a>c ? c : a;
	printf("%d %d %d\n", d, e, f);
	return 0;
}
